package com.plugin.manage.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.plugin.core.model.entity.ElderCheckIn;
import com.plugin.manage.pojo.vo.ElderCheckinDetailVO;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 入住记录服务接口
 *
 * @author mark
 * @date 2025-07-23
 */
public interface ICheckinService extends IService<ElderCheckIn> {

    /**
     * 获取今日入住人数
     * 统计elder_check_in表中status=4（已缴费入住）的今日记录数
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 今日入住人数
     */
    Long getTodayCheckedInCount(LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 获取待审核的入住记录数量
     * 统计elder_check_in表中status=1（待审核）的记录数
     *
     * @return 待审核的入住记录数量
     */
    Long getPendingReviewCount();

    /**
     * 获取总的已入住人数
     * 统计elder_check_in表中status=4（已缴费入住）的总记录数
     *
     * @return 总的已入住人数
     */
    Long getTotalCheckedInCount();

    /**
     * 获取指定状态的记录数
     *
     * @param status 状态值(1-5)，如果为null则查询所有状态
     * @return 符合条件的记录数
     */
    Map<String, Long> getCountByStatus(Integer status);

    /**
     * 关联查询长者信息和入住状态，按时间倒序排列
     *
     * @return 长者状态信息列表
     */
    List<Map<String, Object>> getElderStatusList();
    
    /**
     * 更新入住记录状态
     *
     * @param id 入住记录ID
     * @param status 新状态值
     * @return 是否更新成功
     */
    boolean updateCheckinStatus(Long id, Integer status);
    
    /**
     * 获取长者入住详情列表
     *
     * @return 长者入住详情列表
     */
    List<ElderCheckinDetailVO> getElderCheckinDetailList();
}
